5
תגובות

unicode-bidi: embed;

פתח mmm ,
הבנתי שההגדרה הזו בCSS
unicode-bidi: embed;


מסדרת את כיוון הטקסט כך שאם יש טקסט RTL מעורבב עם טקסט LTR זה מסתדר טוב.

השאלה: האם הבנתי נכון? והאם במקרה של טקסט שאינו מעורבב, אני לא אצטרך להגדיר DIRECTION, והכיוון יוגדר לבד? או שזה עוזר רק לטקסטים מעורבבים?

5 תשובות

avatar ענה intval ב 28 ליוני 2013 #

אין לי מושג, אבל למה שלא תנסה ותספר מה יצא ?

avatar ענה mmm ב 28 ליוני 2013 #

האמת? ניסיתי ואין שום שינוי.
לכן אני שואל כאן, אולי אני מפספס את צורת השימוש, או אולי אני צריך להשתמש בפרמטר אחר ולא בEMBED.

avatar ענה OrelBeY ב 28 ליוני 2013 #

קודם כל, לפעמים כדאי פשוט ללכת למקור: המפרט הרשמי של W3C. (ואחרי זה כמובן לבדוק תמיכה של דפדפנים וכדו'.)
במקרה הספציפי הזה הייתי ממליץ לך מאוד (למעשה הייתי ממש מבקש ממך) לקרוא את המאמר החשוב "מה שאתם צריכים לדעת על האלגוריתם הדו-כיווני וסימון פנימי" של W3C. אני זוכר שהיה לו תרגום לעברית, אבל הוא לא ממש היה מעודכן, ואולי זו הסיבה לכך שהם הורידו אותו (אם בכלל; אני פשוט לא מוצא אותו).
מדובר בנושא חשוב מאוד, שהרבה מאוד אתרים (למעשה הייתי מהמר ואומר שרוב האתרים) מזלזלים בו, או פשוט לא מודעים אליו כל כך.
המאמר הזה לא שלם, ויש מה להוסיף לו (למשל, מאפיין ה-CSS unicode-bidi). הנה, בסוגריים פה אתה יכול לראות דוגמה לבעיה בערבוב טקסט בעברית ובאנגלית. [על רגל אחת], הכיוון של הטקסט כאן מוגדר כ-rtl (ימין לשמאל), והדפדפן החכם שלנו יודע איך לטפל גם בטקסט שהוא משמאל לימין (ltr). כמו שאתה יכול לראות - הוא לא הופך אותו למשהו כזה (דבר שהיה קורה אם היינו משתמשים ב-unicode-bidi: bidi-override - כמו בדוגמה בקישור המצורף - או באלמנט bdo). אבל מה שהוא עושה זה לא מושלם. (הרחבה במאמר הנפרד.)

אני אתן דוגמה קצרה שתמחיש את ההבדל בין "normal" לבין "embed" במאפיין unicode-bidi. בעצם, בוא נשתמש בדוגמה ממקודם.
"מאפיין ה-CSS unicode-bidi." זה לא נראה טוב. הטקסט באנגלית הפוך ממה שאני רוצה. אז במאמר שם יביאו לך אפשרות להשתמש בישויות HTML (יש את ‏ ועוד כמה). אבל נניח שאתה לא רוצה להוסיף לטקסט HTML Entities למטרות כאלה או משהו כזה. אז מה שאנחנו נעשה עכשיו זה הפרדה של הטקסט ה-LTR ליחידות. פשוט נעטוף כל צמד מילים (במקרה הזה CSS ו-unicode-bidi) באלמנט inline כמו span ואז נוסיף להם unicode-bidi עם embed.
הכול בדוגמת הקוד המצורפת.

מצטער אם התשובה ארוכה מדי. אולי קצת נסחפתי... :-)

נ.ב. הפתרון עם ה-unicode-bidi אולי דורש קצת יותר סימון (markup), אבל הוא יכול להיות הרבה יותר משתלם בסוף, כמו כל הפתרונות האלה שמשאירים לך גמישות לעתיד במחיר קטן מאוד. (היה טיפשי מצידי לא להשתמש בזה. מעכשיו אעשה זאת. תודה לך על שהזכרת לי את הנושא. :-))

נ.ב.נ. דוגמה נפוצה לבעיה כזאת היא בהפרדת רשימה של מילים (או צמדי מילים) באנגלית (או שילובם עם כאלה בעברית). למשל: "Apache, PHP ו-MySQL הם בלהבלהבלה." ה-Apache אמור להיות ראשון, והפסיק בכלל לא במקום המתאים.

avatar ענה mmm ב 30 ליוני 2013 #

תודה רבה לך על התשובה המפורטת!

avatar ענה OrelBeY ב 30 ליוני 2013 #

שמח לעזור. :-)